package main


func main() {
	//整型
	//a = 200
	//fmt.Println(a)
	//无符号位8位整型  注意计算 溢出
	//b = 1
	//c = 2
	//fmt.Println(b - c)
	//进制表示
	//bin_num1 := 0b11
	//oct_num2 := 0o11
	//hex_num3 := 0x11
	//fmt.Println(bin_num1, oct_num2, hex_num3)

	//浮点数
	//var f1 float32
	//var f2 float32
	//var f3 float32
	//f1 = 0.111111
	//f2 = 0.222222
	//f3 = 0.333333
	//if f1 + f2 == f3 {
	//	fmt.Println("ok")
	//} else {
	//	fmt.Println("error")
	//}

	//x := decimal.NewFromFloat(0.111111)
	//y := decimal.NewFromFloat(0.222222)
	//z := decimal.NewFromFloat(0.333333)
	//if x.Add(y).Equal(z) {
	//	fmt.Println("ok")
	//}


	//编码   人类语言-- 机器语言  -- ascii  -- unicode （万国码）
    // byte  rune  编码
	// byte  -- uint8
	// rune  -- int32
	//var c1 byte
	//c1 = 97
	//fmt.Println(c1, string(c1))
	//
	//for _, v := range "abcxyz" {
	//	fmt.Println(v)
	//	fmt.Printf("%v(%c), type is %T\n", v, v, v)
	//}

	//字符串格式化
	//格式化好的字符串赋值  在python可以直接赋值
	//format_str := "name is %s" %(name)
	//把格式化好的字符串赋值给另一个变量
	//format_str := fmt.Sprintf("name is %s", "sctl")
	//fmt.Println(format_str)
	//name := "sctl"
	//result := fmt.Sprintf("my name is %s",name)
	//fmt.Printf(result)
	//
	////统计字符串的长度 -- 占用字节数
	//len_str := len("xxx中yyy")
	//fmt.Println(len_str)
	//str1 := "xx中文"
	//for i := 0 ; i<len(str1); i++ {  //byte
	//	//通过下表获取的是一个个字节表示，中文占用三个字节， 会被拆分输出
	//  fmt.Printf("%v(%c), type is %T \n", str1[i], str1[i], str1[i])
	//}
	//for i := 0; i<10; i++ {
	//	fmt.Println(i)
	//}

	// 接受用户从键盘输入的字符串， 统计出现次数最多的字符  输出是哪个字符和它出现的次数
	//fmt.Print("please input a string:")
	//var str1 string
	//fmt.Scan(&str1)
	//count_max := 0
	//str_max := ""
	//
	//for _, i :=range str1{
	//	counts := strings.Count(str1, string(i))
	//	if counts  > count_max {
	//		count_max = counts
	//		str_max = string(i)
	//	}
	//}
	//fmt.Printf("出现次数最多的字符：%s，出现次数为：%d", str_max, count_max)

	//转义字符
	//str1 := "a\tb"
	//fmt.Println(str1)
	//str2 := `a\tb`  //字符串原样输出，不转义
	//fmt.Println(str2)

	//字符串的转换  -- strconv
	//number1 := 10
	//str1 := strconv.Itoa(number1)  //int -->str
	//fmt.Printf("str1 is:%s, type is %T \n", str1, str1)
	////str --> int
	//v, e := strconv.Atoi("10") //返回两个值， 不能转换  e就会拿到错误信息
	//fmt.Printf("v is %v, type is %T, error is %s",v, v,e)

	//string常用方法  --》 strings包
	//str1 := "xixihaha"
	//if strings.HasPrefix(str1, "x") {
	//	fmt.Println("str1 start with x")
	//}
	//fmt.Println(  strings.Count(str1,"h") )
	////n  --> -1  全部替换
	//fmt.Println( strings.Replace(str1, "x", "*", -1))

	//字符串的截取
	//str[start:end]
	//str1 := "abcdefg"
	//fmt.Println( str1[2:5])  // 左闭右开
	//fmt.Println( str1[-3])  没有负下标

	//布尔类型  -- true false
	//var a bool  // 默认值是false
	//fmt.Println(a)
	//var num  int
	//var str  string
	//fmt.Println(num, str)
}